home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_11_06 / 1106097a < prev    next >
Text File  |  1993-04-06  |  6KB  |  184 lines

  1.        /***********************************************
  2.        *
  3.        *       file d:\cips\main2seg.c
  4.        *
  5.        *       Functions: This file contains
  6.        *          main
  7.        *
  8.        *       Purpose:
  9.        *          This is a calling program that calls
  10.        *          the three new segmentation techniques
  11.        *          discussed in Image Processing part 10.
  12.        *
  13.        *       External Calls:
  14.        *          gin.c - get_image_name
  15.        *          numcvrt.c - get_integer
  16.        *                      int_convert
  17.        *          tiff.c - read_tiff_header
  18.        *          segment2.c - edge_region
  19.        *                       gray_shade_region
  20.        *                       edge_gray_shade_region
  21.        *
  22.        *       Modifications:
  23.        *          5 December 1992 - created
  24.        *
  25.        ***********************************************/
  26.  
  27. #include "cips.h"
  28.  
  29.  
  30.  
  31. short the_image[ROWS][COLS];
  32. short out_image[ROWS][COLS];
  33.  
  34. main(argc, argv)
  35.    int argc;
  36.    char *argv[];
  37. {
  38.  
  39.    char     name[80], name2[80], low_high[80], type[80];
  40.    float    percent;
  41.    int      count, i, ie, il, j, le, length, ll,
  42.             looking = 1, lw, width;
  43.    short    value,  value2, value3, 
  44.             value4, value5, value6;
  45.    struct   tiff_header_struct image_header;
  46.  
  47.    _setvideomode(_TEXTC80); /* MSC 6.0 statements */
  48.    _setbkcolor(1);
  49.    _settextcolor(7);
  50.    _clearscreen(_GCLEARSCREEN);
  51.  
  52.        /***********************************************
  53.        *
  54.        *       Interpret the command line parameters.
  55.        *
  56.        ************************************************/
  57.  
  58.    if(argc < 4){
  59.     printf(
  60.     "\n\nNot enough parameters:"
  61.      "\n"
  62.      "\n usage: main2seg in-file out-file type"
  63.      " [values ...]"
  64.      "\n"
  65.      "\n   recall type: Edge-region edge-gray-grow (C)"
  66.      " Gray-shade-grow"
  67.      "\n"
  68.     "\n   main2seg in-file out-file R percent "
  69.     "edge-type "
  70.     "\n            min-area max-area diff set-value erode"
  71.     "\n   main2seg in-file out-file E percent "
  72.     "edge-type "
  73.     "\n            min-area max-area diff set-value erode"
  74.     "\n   main2seg in-file out-file G diff "
  75.     "min-area max-area"
  76.     "\n"
  77.     "\n");
  78.     exit(0);
  79.    }
  80.  
  81.    strcpy(name,  argv[1]);
  82.    strcpy(name2, argv[2]);
  83.    strcpy(type,  argv[3]);
  84.    if(type[0] == 'a' || type[0] == 'A'  ||
  85.       type[0] == 'c' || type[0] == 'C'  ||
  86.       type[0] == 'e' || type[0] == 'E'){
  87.       percent = atof(argv[4]);
  88.       value   = atoi(argv[5]);
  89.       value2  = atoi(argv[6]);
  90.       value3  = atoi(argv[7]);
  91.       value4  = atoi(argv[8]);
  92.       value5  = atoi(argv[9]);
  93.       value6  = atoi(argv[10]);
  94.     }
  95.    else{
  96.       value  = atoi(argv[4]);
  97.       value2 = atoi(argv[5]);
  98.       value3 = atoi(argv[6]);
  99.    }
  100.  
  101.    il = 1;
  102.    ie = 1;
  103.    ll = ROWS+1;
  104.    le = COLS+1;
  105.  
  106.        /******************************************
  107.        *
  108.        *  Read the input image header and setup
  109.        *  the looping counters.
  110.        *
  111.        *******************************************/
  112.  
  113.    read_tiff_header(name, &image_header);
  114.  
  115.    length = (90 + image_header.image_length)/ROWS;
  116.    width  = (90 + image_header.image_width)/COLS;
  117.    count  = 1;
  118.    lw     = length*width;
  119.    printf("\nlength=%d  width=%d", length, width);
  120.  
  121.        /********************************
  122.        *
  123.        *  Edge only segmentation 
  124.        *
  125.        *********************************/
  126.  
  127.    if(type[0] == 'e'  || type[0] == 'E'){
  128.       for(i=0; i<length; i++){
  129.          for(j=0; j<width; j++){
  130.             printf("\nrunning %d of %d", count, lw);
  131.             count++;
  132.             edge_region(name, name2, the_image, 
  133.                         out_image, il+i*ROWS, 
  134.                         ie+j*COLS, ll+i*ROWS,
  135.                         le+j*COLS, value, value2, 
  136.                         value3, value4, percent, 
  137.                         value5, value6);
  138.          }  /* ends loop over j */
  139.       }  /* ends loop over i */
  140.    }  /* ends edge_region */
  141.  
  142.        /********************************
  143.        *
  144.        *  Gray Shade only segmentation 
  145.        *
  146.        *********************************/
  147.  
  148.    if(type[0] == 'g'  || type[0] == 'G'){
  149.       for(i=0; i<length; i++){
  150.          for(j=0; j<width; j++){
  151.             printf("\nrunning %d of %d", count, lw);
  152.             count++;
  153.             gray_shade_region(name, name2, the_image,
  154.                               out_image, il+i*ROWS,
  155.                               ie+j*COLS, ll+i*ROWS,
  156.                               le+j*COLS, value,
  157.                               value2, value3);
  158.          }  /* ends loop over j */
  159.       }  /* ends loop over i */
  160.    }  /* ends gray_shade_region */
  161.  
  162.        /**********************************
  163.        *
  164.        *  Edge and Gray Shade segmentation 
  165.        *
  166.        ***********************************/
  167.  
  168.    if(type[0] == 'c'  || type[0] == 'C'){
  169.       for(i=0; i<length; i++){
  170.          for(j=0; j<width; j++){
  171.             printf("\nrunning %d of %d", count, lw);
  172.             count++;
  173.             edge_gray_shade_region(name, name2, 
  174.                      the_image, out_image, il+i*ROWS, 
  175.                      ie+j*COLS, ll+i*ROWS, le+j*COLS,
  176.                      value, value2, value3, value4, 
  177.                      percent, value5, value6);
  178.          }  /* ends loop over j */
  179.       }  /* ends loop over i */
  180.    }  /* ends edge_gray_shade_region */
  181.  
  182. }  /* ends main  */
  183.  
  184.